package com.myblog.controller;

import com.myblog.constant.CodeType;
import com.myblog.model.FriendLink;
import com.myblog.service.FriendLinkService;
import com.myblog.utils.DataMap;
import com.myblog.utils.JsonResult;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class FriendLinkController {

    @Autowired
    private FriendLinkService friendLinkService;

    /**
     * 获取所有友链
     * @return
     */
    @PostMapping("/getFriendLink")
    public String getFriendLink(){
        try{
            //调用serive的方法获取到所有友链
            DataMap data = friendLinkService.searchAllFriendLink();

            return JsonResult.build(data).toJSON();
        }catch (Exception e){
            log.error("FriendLinkController getFriendLink Excepion",e);
        }
        return JsonResult.fail(CodeType.SERVER_EXCEPTION).toJSON();
    }

    /**
     * 主页获取所有友链
     * @return
     */
    @PostMapping("/getFriendLinkInfo")
    public String getFriendLinkInfo(){
        try{
            //调用serive的方法获取到所有友链
            DataMap data = friendLinkService.searchAllFriendLink();

            return JsonResult.build(data).toJSON();
        }catch (Exception e){
            log.error("FriendLinkController getFriendLinkInfo Excepion",e);
        }
        return JsonResult.fail(CodeType.SERVER_EXCEPTION).toJSON();
    }

    /**
     * 根绝是否传递id进行删除或者编辑（更新）操作
     * @param friendLink
     * @return
     */
    @PostMapping("/updateFriendLink")
    public String updateFriendLink(FriendLink friendLink){
        try{
            //根据传过来的id进行判断，如果为空，则是新增友链，如果不为空，则标记友链
            //不为空，编辑友链
            if(friendLink.getId() != null){
                DataMap data = friendLinkService.updateFriendLink(friendLink);
                return JsonResult.build(data).toJSON();
            }
            //为空，新增友链
            else {
                DataMap data = friendLinkService.addFriendLink(friendLink);
                return JsonResult.build(data).toJSON();
            }
        }catch (Exception e){
            log.error("FriendLinkController updateFriendLink Exception");
        }
        return JsonResult.fail(CodeType.SERVER_EXCEPTION).toJSON();
    }

    /**
     * 删除友链
     * @param id
     * @return
     */
    @PostMapping("/deleteFriendLink")
    public String deleteFriendLink(@Param(value = "id")Integer id){
        try{
            //根据id删除友链
            DataMap data = friendLinkService.deleteFriendLinkById(id);
            return JsonResult.build(data).toJSON();
        }catch (Exception e){
            log.error("FriendLinkController deleteFriendLink Exception",e);
        }
        return JsonResult.fail(CodeType.SERVER_EXCEPTION).toJSON();
    }

}
